#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define FOR(i, m) for(i=0;i<m;i++)

#define MAXV		101
#define INF			1000000001

typedef struct s_vd
{
	int d;
	int pi;
	int iss;
} Vd;

void dijkstra(int adj[][MAXV], Vd *v, int s, int n)
{
	int i,j,qh=n;
	int min=INF;
	FOR(i,n) {
		v[i].d=INF;
		v[i].pi=-1;
		v[i].iss=0;
	}
	v[s].d=0;
	
	while(qh--) {
		for(j=0;v[j].iss==1;j++);
		for(i=j+1;i<n;i++)if(v[i].iss==0&&v[i].d<v[j].d)j=i;
		v[j].iss=1;
		FOR(i,n)if(v[i].d > v[j].d + adj[i][j]) {
				v[i].d=v[j].d+adj[i][j];
				v[i].pi=j;
			}
	}
}

void update(int adj[][MAXV], Vd *vs, Vd *vd, int i) {
	while(vd[i].pi!=-1) {
		vs[vd[i].pi].d=vs[i].d+adj[i][vd[i].pi];
		i=vd[i].pi;
	}
}

void printpath(Vd *g, int n) {
	int i;
	FOR(i,n) {
		printf("[%d,%d] ",i,g[i].d);
	}
	puts("");
}

int main()
{
	int i, j, n, k, m, w, a, b, t,vsmin,vdmin;
	int pmin=INF, adj[MAXV][MAXV];
	Vd vs[MAXV], vd[MAXV];//, *q[MAXV];
	
	FOR(i,MAXV) FOR(j,MAXV) adj[i][j]=(i==j)?0:INF;

	scanf("%d %d %d", &n, &k, &m);
	
	FOR(i,k) {
		scanf("%d %d %d", &a,&b,&w); a--;b--;
		if(w<adj[a][b])	adj[b][a]=adj[a][b]=w; 
	}
	dijkstra(adj,vs,0,n); 
	dijkstra(adj,vd,n-1,n);
	pmin=vs[n-1].d;

//	printf("vs");
///	printpath(vs,n);
//	printf("vd");
//	printpath(vd,n);	
//	printf("%d %d\n",vs[n-1].d,vd[0].d);

	while(m--) {
		scanf("%d %d %d", &a,&b,&w);
		a--;b--;
		vsmin=(vs[a].d>vs[b].d)?b:a;
		vdmin=(vd[a].d>vd[b].d)?b:a;
//		printf("vsmin=%d vdmin=%d w=%d pmin=%d\n",vsmin,vdmin,w,pmin);
		if(adj[a][b]>w && vs[vsmin].d+vd[vdmin].d+w<pmin) {
//			printf("aaa\n");
			adj[a][b]=adj[b][a]=w;
			update(adj,vs,vd,vsmin);
			update(adj,vd,vs,vdmin);
			pmin=vs[n-1].d;
			printf("1\n");	
		} else {
			printf("0\n");
		}
//		printf("vs");
//		printpath(vs,n);
//		printf("vd");
//		printpath(vd,n);	
	}	
	return 0;
}
